package com.ktwlrj.securitycenter.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.ktwlrj.core.base.SuperServer;
import com.ktwlrj.securitycenter.controller.args.SafeApproveArgs;
import com.ktwlrj.securitycenter.controller.args.SafePassApplyArgs;
import com.ktwlrj.securitycenter.controller.args.SafePassApprovePageArgs;
import com.ktwlrj.securitycenter.controller.args.SafePassArgs;
import com.ktwlrj.securitycenter.controller.args.SafePassFormArgs;
import com.ktwlrj.securitycenter.controller.args.SafePassPageArgs;
import com.ktwlrj.securitycenter.dto.SafePassApprovePageDto;
import com.ktwlrj.securitycenter.dto.SafePassDto;
import com.ktwlrj.securitycenter.dto.SafePassFormDto;
import com.ktwlrj.securitycenter.dto.SafePassPageDto;
import com.ktwlrj.securitycenter.entity.SafePassEntity;

/**
 * (SafePass)业务层接口
 *
 * @author code generation
 * @date 2020-02-24 18:08:13
 * @since JDK1.8
 */
public interface SafePassService extends SuperServer<SafePassEntity> {
    /**
     * 保存
     *
     * @param args ${@link SafePassArgs}
     * @throws RuntimeException ${@link RuntimeException}
     * @author code generation
     * @date 2020-02-24 18:08:13
     */
    void save(SafePassFormArgs args) throws RuntimeException;


    /**
     * 通过id更新
     *
     * @param args ${@link SafePassArgs}
     * @throws RuntimeException ${@link RuntimeException}
     * @author code generation
     * @date 2020-02-24 18:08:13
     */
    void updateById(SafePassFormArgs args) throws RuntimeException;


    /**
     * 分页查询
     *
     * @param args ${@link SafePassPageArgs}
     * @throws RuntimeException ${@link RuntimeException}
     * @return IPage<SafePassPageDto> ${@link IPage<SafePassDto>}
     * @author code generation
     * @date 2020-02-24 18:08:13
     */
    IPage<SafePassPageDto> page(SafePassPageArgs args) throws RuntimeException;

    /**
     * 历史分页查询
     * @param args
     * @return
     * @throws RuntimeException
     */
    IPage<SafePassPageDto> historyPage(SafePassPageArgs args) throws RuntimeException;
    
    /**
     * 审批分页查询
     * @param args
     * @return
     * @throws RuntimeException
     */
    IPage<SafePassApprovePageDto> approvePage(SafePassApprovePageArgs args) throws RuntimeException;
    /**
     * 通过id查询详情
     *
     * @param id ${@link String}
     * @throws RuntimeException ${@link RuntimeException}
     * @return SafePassDto ${@link SafePassDto}
     * @author code generation
     * @date 2020-02-24 18:08:13
     */
    SafePassFormDto getById(String id) throws RuntimeException ;
    
    /**
     * 通过id提交业务放行
     *
     * @param id ${@link String}
     * @throws RuntimeException ${@link RuntimeException}
     * @return SafePassDto ${@link SafePassDto}
     * @author code generation
     * @date 2020-02-24 18:08:13
     */
    void submit(SafePassApplyArgs args) throws RuntimeException;
    
    /**
     * 复制并新增业务放行
     * @param id
     * @throws RuntimeException
     */
    void changeInsert(SafePassFormArgs args) throws RuntimeException;
    
    /**
     * 删除业务放行
     * @param id
     * @throws RuntimeException
     */
    void deleteById(String id)throws RuntimeException;
    
    /**
     * 删除申请提交
     * @param args
     */
    void deleteApply(SafePassApplyArgs args)throws RuntimeException;
    
    /**
     * 审批处理
     * @param args
     * @throws RuntimeException
     */
    void approveHandle(SafeApproveArgs args)throws RuntimeException;
}